package com.sjd.farm.service;

import com.sjd.common.core.domain.AjaxResult;
import com.sjd.farm.domain.SjdFarmLandClaimOrder;
import com.sjd.farm.domain.dto.land.FarmLandClaimRequestDTO;
import com.sjd.farm.domain.dto.land.FarmLandUpgradeRequestDTO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 农场土地认领订单Service接口
 *
 * @author joker
 * @date 2022-01-26
 */
public interface ISjdFarmLandClaimOrderService {

    /**
     * 查询农场土地认领订单列表
     *
     * @param sjdFarmLandClaimOrder 农场土地认领订单
     * @return 农场土地认领订单集合
     */
    List<SjdFarmLandClaimOrder> selectSjdFarmLandClaimOrderList(SjdFarmLandClaimOrder sjdFarmLandClaimOrder);

    /**
     * 根据主键获取实体
     *
     * @param id 主键
     * @return 实体
     */
    SjdFarmLandClaimOrder getSjdFarmLandClaimOrderById(Long id);

    /**
     * 根据会员编号获取土地等级
     *
     * @param memberId 会员编号
     * @return 当前会员土地中最高的土地等级 -1=代表会员没有可用的土地
     */
    int getMaxLandLevelByMemberId(Long memberId);

    /**
     * 执行校验农场土地认领订单过期情况
     *
     * @param now 当前时间
     * @return 执行结果
     */
    String checkFarmLandIsOverDue(LocalDateTime now);

    /**
     * 土地认领
     *
     * @param landId     landId
     * @param requestDTO requestDTO
     * @return AjaxResult
     */
    AjaxResult farmLandClaim(Long landId, FarmLandClaimRequestDTO requestDTO);

    /**
     * 土地升级
     *
     * @param claimOrderId claimOrderId
     * @param requestDTO   requestDTO
     * @return AjaxResult
     */
    AjaxResult farmLandUpgrade(Long claimOrderId, FarmLandUpgradeRequestDTO requestDTO);
}
